package com.doitedu.day06

/**
 * @Date: 22.6.26 
 * @Author: HANGGE
 * @qq: 598196583
 * @Tips: 学大数据 ,到多易教育
 * @Description:
 */
object _04隐式_例子 {

  def max[T <: Ordered[T]](x:T , y:T): T ={
    // 不确定T 类型的数据是否可以排序
    // T 是Ordered的子类
    if (x > y) x else y
  }

/*  implicit val od = new  Ordering[User] {
   override def compare(x: User, y: User): Int = {

   }
 }*/
  // 将 User 处理成  可比较的User
  // add(x:Int,y:Int):Int
 implicit def myOrdered(user:User):Ordered[User]={
    new  Ordered[User] {
      override def compare(that: User): Int = {
        user.age - that.age
      }
    }

  }

  def main(args: Array[String]): Unit = {

    val ls = List(
      new User(1, "yuge", 43),
      new User(2, "zhiyao", 18),
      new User(3, "xingbo", 16)
    )


    // sorted有一个隐式参数  Ordering[B]
    // 默认 从上下文中查找对应的Ordering[User]  没有找到隐式类型  报错  可以显示的传入
    // 隐式的传入  1) 参数使用implicit  2) 从上下文中查找对应的Ordering[User]
      // 排序器  可排序的
    // 在使用的时候会自动转换
    ls.sorted


  }


}
